A comprehensive Shiny application for analyzing single-cell RNA sequencing data with an intuitive modular workflow. shinyscRNA provides a streamlined interface for scRNA-seq analysis with support for both web and desktop usage through Electron.
git clone https://github.com/toslr/scRNA-shinyApp.git
cd scRNA-shinyApp
source("install.R")
This will install all dependencies required by the application, including: - shiny - Seurat - patchwork - shinyjs - shinyFiles - dplyr - Matrix - ggplot2 - scCustomize - DT - GEOquery - pheatmap - plotly - htmlwidgets - RColorBrewer - fontawesome - ggpubr - hdf5r
shiny::runApp()
The application can also be run as a desktop application using Electron:
For MacOS: Download the app file: shinyscRNA-1.0.0-arm64.dmg
Put it in your Applications folder and click to run it.
It might be necessary to allow the app to access full disk in your computer security settings.
The shinyscRNA app provides a step-by-step workflow for analyzing single-cell RNA sequencing data. Follow these steps to complete your analysis:
From now on, you can use the sample and condition management panels in the sidebar.
The application follows a modular design pattern with these main components:
.
├── app.R # Main application entry point
├── shinyscRNA.Rproj # R project file
├── R/ # R code directory
│ ├── modules/ # Functional modules
│ │ ├── cluster_management_module.R
│ │ ├── condition_management_module.R
│ │ ├── data_input_module.R
│ │ ├── de_analysis_module.R
│ │ ├── dimension_reduction_module.R
│ │ ├── metadata_module.R
│ │ ├── qc_module.R
│ │ ├── sample_management_module.R
│ │ ├── save_load_module.R
│ │ └── data_input_utils/ # Utilities for data input
│ │ ├── file_format_utils.R
│ │ ├── gene_mapping_utils.R
│ │ └── geo_data_utils.R
│ │ ├── de_analysis_utils/ # Utilities for DE analysis
│ │ ├── cluster_utils.R
│ │ ├── de_computation.R
│ │ ├── ui_components.R
│ │ └── visualization.R
│ │ └── dimension_reduction_utils/ # Utilities for dimension reduction
│ │ ├── dimred_computation.R
│ │ └── dimred_visualization.R
│ ├── server/ # Server components
│ │ ├── navigation.R
│ │ ├── observers.R
│ │ ├── restore_ui.R
│ │ └── sections.R
│ ├── server.R # Main server function
│ └── ui.R # Main UI function
├── www/ # Web assets
│ ├── script.js # Client-side JavaScript
│ └── styles.css # CSS styles
├── analysis_saves/ # Directory for saved analyses
├── gene_mappings/ # Cached gene name mappings
├── main.js # Electron main process file
├── package.json # Electron app configuration
├── loading.html # Loading screen for Electron app
└── install.R # Package installation script
Each major functionality is encapsulated in a module following the Shiny module pattern:
The application includes Electron integration for desktop usage:
The code uses function-level documentation with roxygen-style comments:
#' @title Process QC Filtering
#' @description Filters cells based on QC metrics and runs preprocessing steps
#' @param seurat_obj The Seurat object to process
#' @param min_feature Minimum feature count threshold
#' @param max_feature Maximum feature count threshold
#' @param max_mt Maximum mitochondrial percentage threshold
#' @return A processed Seurat object
#' @keywords internal
processQCFiltering <- function(seurat_obj, min_feature, max_feature, max_mt) {
# Implementation...
}
To include screenshots in your README, add them to a
screenshots directory:
shinyscRNA/
├── screenshots/ # Directory for README screenshots
│ ├── main_interface.png # Main application interface
│ ├── metadata_import.png # Metadata import section
│ ├── qc_metrics.png # QC metrics visualization
│ ├── qc_filtering.png # QC filtering controls
│ ├── pca_elbow.png # PCA elbow plot
│ ├── umap_2d.png # 2D UMAP visualization
│ ├── umap_3d.png # 3D UMAP visualization
│ ├── de_options.png # DE analysis options
│ ├── volcano_plot.png # Volcano plot
│ ├── de_heatmap.png # Differential expression heatmap
│ └── gene_boxplot.png # Gene expression boxplot
└── ...
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.